//
//  String+Source.swift
//  新浪来源处理
//
//  Created by 雷路荣 on 16/1/4.
//  Copyright © 2016年 leilurong. All rights reserved.
//


// 正则表达式:从复杂的文本中按一定的规则找出需要的内容.正则表达式就是描述这个规则语句
import Foundation

extension String {
    /// 从新浪的来源字符串中返回来源
    func source() -> String? {
        
        // 1 创建正则表达式对象
        /*
            pattern: 正则表达式的规则
            . : 匹配任意字符
            * : 匹配任意长度
            ? : 尽可能少的匹配
            (): 表示捕获()里面的内容作为结果返回
            options: NSRegularExpressionOptions
            DotMatchesLineSeparators: 正则表达式匹配 . 默认不匹配换行的,DotMatchesLineSeparators表示 . 也可以匹配换行
        */
        let regular = try! NSRegularExpression(pattern: ">(.*?)<", options: NSRegularExpressionOptions.DotMatchesLineSeparators)
        
        // 2 让正则表达式对象去匹配字符串(self)
        /*  firstMatchInString: 匹配第一个合适的条件
            string: 从哪个String里面查找
            options
            range: 查找字符串的范围
            NSTextCheckingResult
            var numberOfRanges: Int { get } // 获取到几个匹配范围
            func rangeAtIndex(idx: Int) -> NSRange  // 通过idx来获取范围
        */
        let result = regular.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSRange(location: 0, length: self.characters.count))
        
        // 3 判断匹配结果的数量
        if result?.numberOfRanges > 1 {
            //如果数量大于1，取第一个
            let range = result!.rangeAtIndex(1)
            // 截取字符串
            let re = (self as NSString).substringWithRange(range)
            return re
        }else{
            // 当匹配不到是返回nil
            return nil
        }
    }
}